﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace Cine
{
    public class Sala
    {
        public int filas, columnas;
        public List<bool> butacaslista;

        public Sala()
        {
        }

        public Sala(int filas, int columnas)
        {
            this.filas = filas;
            this.columnas = columnas;
            butacas_inicial();
            Serialize<Sala>("Sala.xml", this);
            Deserialize<Sala>("Sala.xml");
        }
        public void tamañoSala(int filas, int columnas)
        {
            this.filas = filas;
            this.columnas = columnas;
            
        }
        public void butacas_inicial()

        {
            this.butacaslista = new List<bool>(this.filas * this.columnas);
            for (int fila = 0; fila < this.filas; fila++)
            {
                for (int columna = 0; columna < this.columnas; columna++)
                {
    
                    butacaslista.Add(false);
      
                }
            }

        }

        public bool verDisponibilidadButaca(int fila, int columna)
        {

            return butacaslista[fila * this.filas + columna];
        }

        public void setEstadoButaca(int posicionfila, int posicioncolumna)
        {
            if (verDisponibilidadButaca(posicionfila, posicioncolumna) == false)
            {
                this.butacaslista[posicionfila * filas + posicioncolumna] = true;
            }
            else if (verDisponibilidadButaca(posicionfila, posicioncolumna) == true)
            {
                this.butacaslista[posicionfila * filas + posicioncolumna] = false;
            }
            Deserialize<Sala>("Sala.xml");
            Serialize<Sala>("Sala.xml", this);
            
        }
        public static void Serialize<T>(string filename, T obj)
        {
            XmlSerializer xs = new XmlSerializer(typeof(Sala));
            xs.Serialize(Console.Out, obj);
            using (StreamWriter wr = new StreamWriter(filename))
            {
                xs.Serialize(wr, obj);
            }
        }
        public static T Deserialize<T>(string filename)
        {
            XmlSerializer xs = new XmlSerializer(typeof(T));
            using (StreamReader rd = new StreamReader(filename))
            {
                return (T)xs.Deserialize(rd);
            }
        }

    }
}

